package com.boardgamelib.system;

import com.boardgamelib.entity.Cella;
import com.boardgamelib.entity.Giocatore;
import com.boardgamelib.entity.Mossa;
import com.boardgamelib.entity.Pezzo;
import com.boardgamelib.entity.Tabellone;
import com.boardgamelib.errors.BoardGameLibException;

/** Il corretto nome della classe sarebbe BoardSystem<br>
 * 
 * @author g.terenziani
 *
 */
public interface SistemaTabellone<C extends Cella<P>, P extends Pezzo<G>, G extends Giocatore> {
	
	/** Ritorna il tabellone di gioco corrente
	 * 
	 * @return
	 */
	public Tabellone<C> getTabellone();
	
	/** Esegue la mossa passata sul tabellone corrente.<br>
	 * 
	 * @param mossa
	 */
	public void eseguiMossa(Mossa<C, P, G> mossa) throws BoardGameLibException;
	
}
